package simax.integrator.adapter

import grails.converters.JSON
import simax.integrator.model.RvMessage

/**
 * 
 * {@link RvMessage} 등의 모델을 Ext.data.Model 형식의 JSON 데이터로 바꾸는 
 * Adapter
 * 
 * 구현 전략:
 * 
 * [extend: 'Ext.data.Model', fields: [[name:n1, type'string'], ...]] 형태의 Map 생성
 * JSON 으로 Casting
 * 
 * @author YongKi
 *
 */


class ExtModelAdapter {
	static JSON convert(Object msg) {
		
		def fields = []
		def columns = []
		msg.properties.each {
			if (it.key in ['dbo'])
				return
				
			def type = 'string'
			if (it.value instanceof Date)
				type = 'date'
			fields << [name:it.key, type:type]
			if (it.key != 'id')
				columns << [header:it.key.capitalize(), dataIndex:it.key]
		}
		
		def msgConverted = [
			dataModel: [
				extend: 'Ext.data.Model', 
				fields: fields
			], columns: columns
		] as JSON
		
		return msgConverted
		
	}
		
}
